home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Whiteline: delta
/
whiteline CD Series - delta.iso
/
progtool
/
modula2
/
module
/
windowdi.def
< prev
next >
Wrap
Text File
|
1995-11-25
|
8KB
|
116 lines
(******************************************************************************)
(* This MODULE is Public Domain. Copy me like a beast! *)
(* Christian Ledermann *)
(* Wölfelkofen 2 *)
(* 84166 Adlkofen *)
(******************************************************************************)
(* *)
(* Started: 20.12.92 03:54:30 *)
(* Version: 20.01.94 04:12:54 *)
(* *)
(******************************************************************************)
(* *)
(* Diese Software ist ohne jede Garantie. Ich verspreche *)
(* keinerlei Wartung und übernehme keine Verantwortung für Schäden die *)
(* durch die Benutzung dieses Programmes entstehen. *)
(* Jegliche Ersatzansprüche lehne ich ab. *)
(* *)
(******************************************************************************)
DEFINITION MODULE WindowDialogue;
FROM SYSTEM IMPORT ADDRESS;
(*********************************************************************)
(* Ein Artikel in ST-Computer 5/93 war die Anregeung für dieses MODUL*)
(* Im Gegensatz zum Vorbild ist es allerdings flexibler und kann so *)
(* einfacher in eigene Programme eingebunden werden. *)
(*********************************************************************)
PROCEDURE OpenWindowDial(TreePtr : ADDRESS; Title : ARRAY OF CHAR):INTEGER;
(********* Erzeugen, Öffnen und Zeichnen eines Fensterdialogs ********)
(* TreePtr : Adresse des Dialoges, zu ermitteln mit *)
(* AES.ResourceGetAddr(0,NummerDerBox,DialogAdresse) *)
(* Titel : Titelzeile des Fensters unter MultiTOS etc. am besten der *)
(* Name des Programmes zu dem der Dialog gehört. *)
(* Rückgabe : Nummer (AES-Handle) des Fensters. *)
(* Greift intern auf CreateDialWindow,openDialWindow zurück *)
(*********************************************************************)
PROCEDURE DoWindowDial(ID, Window : INTEGER;TreePtr : ADDRESS; FirstObject :INTEGER):INTEGER;
(********** nicht modale Dialog Box ausführen*************************)
(* ID : ID des aufrufenden Programmes, dies ist der Rückgabewert von *)
(* AppInitialize. *)
(* Window : Nummer des Fensters, wird von OpenWindowDial bzw Create- *)
(* DialWindow zurückgegeben. *)
(* Wenn hier -1 übergeben wird d.h. es konnte kein Fenster erzeugt *)
(* werden wir ein "normaler" modaler Move-Dialog ausgeführt. *)
(* TreePtr : Adresse des Dialoges, zu ermitteln mit *)
(* AES.ResourceGetAddr(0,NummerDerBox,DialogAdresse) *)
(* NummerDerBox ist Vom RCS erzeugt worden und Steht in der .I -Datei*)
(* FirstObject : Erstes Editierbares Object, dort steht dann der *)
(* Cursor im Edit Feld, wenn kein EditObject vorhanden ist dann muß *)
(* hier 0 übergeben werden. *)
(* Rückgabe : Das Feld das zum Verlassen der Box angeklickt wurde. *)
(* Wenn der Dialog aus anderen Gründen verlassen wurde zB. weil ein *)
(* WindowEvent auftrat o.ä. wird 0 zurückgegeben. *)
(* Achtung!!! Wenn das Dialog-Fenster verschoben wird muss ein Redraw*)
(* erzwungen werden bevor die Dialogbox wieder aktiviert wird sonst *)
(* erkennt das GEM nicht die geänderten Koordinaten d.h. es vermutet *)
(* die Buttons und EditFelder an der Stelle an der sich der Dialog *)
(* vorher befand -> Bildschirmmüll durch die Editfelder und *)
(* Blindflug zum bedienen der Buttons. *)
(* Der Dialog kann wie gewöhnlich im RCS erzeugt werden !!! *)
(* Als Schmankerln sind hier noch ein paar Erweiterungen eingebaut *)
(* 1.) Tastatursteuerung: wird Alt+Taste gedrückt so wird der Button *)
(* im Dialogbaum ausgeführt der als letztes(!) diese Taste in Groß- *)
(* buchstaben enthält. Dabei ist es gleichgültig ob der Buttontext *)
(* noch andere Großbuchstaben enthält. OK reagiert also auf Alt-O *)
(* und(!) auf Alt-K. *)
(* 2.) Checkboxes: Ein Object vom Typ GBox das die Hintergrundfarbe *)
(* schwarz hat und den Status crossed besitzt wird a) beim Aufruf *)
(* von DoMoveDialog invertiert so das es nun eine weiße Box mit *)
(* schwarzem Kreuz ist und b) wenn es im Dialog angeklickt wird mit *)
(* dem Status Checked+Selected belegt -> weiße Box *)
(* 3.) Wenn es kein DEFAULT-Object gibt wird mit ENTER bzw. RETURN *)
(* der nächste editierbare Eintrag angesprungen. *)
(*********************************************************************)
PROCEDURE CloseWindowDial(VAR Window : INTEGER);
(****** Fenster-Dialog schließen und Fenster freigeben (löschen)******)
(* Window : AES-Fenster-Handle, wird als Rückgabe auf -1 gesetzt *)
(* Greift intern auf CloseDialWindow,DeleteDialWindow zurück *)
(*********************************************************************)
PROCEDURE CreateDialWindow(TreePtr : ADDRESS; Title : ARRAY OF CHAR):INTEGER;
(***********Erzeugt ein Dialog Fenster *******************************)
(* TreePtr : Adresse des Dialoges, zu ermitteln mit *)
(* AES.ResourceGetAddr(0,NummerDerBox,DialogAdresse) *)
(* Titel : Titelzeile des Fensters unter MultiTOS etc. am besten der *)
(* Name des Programmes zu dem der Dialog gehört. *)
(* Rückgabe : Nummer (AES-Handle) des Fensters. *)
(* Alle nötigen Strukturen für die verwaltung des Fensters werden *)
(* erzeugt: Fenster, Redraw-PROCEDURE... *)
(* Der Dialog wir mittels ObjectCenter in der Bildschirmmitte *)
(* angeordnet. *)
(*********************************************************************)
PROCEDURE OpenDialWindow(Window : INTEGER):BOOLEAN;
(****************** Öffnen des Dialog-Fensters.***********************)
(* Window : AES-Fenster-Handle *)
(* Rückgabe TRUE falls es erfolgreich geöffnet worden ist *)
(* Das Fenster öffnet sich an der Stelle, wo es zuletzt war. *)
(* Um den Dialog zu zeichnen muss hier noch ein Redraw erzwungen *)
(* werden *)
(*********************************************************************)
PROCEDURE CloseDialWindow(Window : INTEGER);
(*********** Schliessen des Dialog-Fensters***************************)
(* Window : AES-Fenster-Handle *)
(*********************************************************************)
PROCEDURE DeleteDialWindow(VAR Window : INTEGER);
(*************** Dialog-Fenster freigeben (löschen)*******************)
(* Window : AES-Fenster-Handle, wird als Rückgabe auf -1 gesetzt *)
(*********************************************************************)
END WindowDialogue.